A microprocessor implementation that speculatively executes instructions along a predicted path, and provides the means to quickly and selectively flush incorrect speculative results, must provide means for restoring the state of the execution unit's rename registers to the state that existed prior to executing instructions on the mispredicted path. Designs utilizing a circular table pointer mechanism to drive the register rename table restore a pointer state in addition to the rename register valid bits normally restored. Generally, a circular table pointer mechanism design requires that one register rename table state be saved for each unresolved branch or interruptible operation present in the machine. Given that the trend in microprocessor implementations is to allow more unresolved branches and interruptible operations in the machine at one time, the area, power consumption, and complexity required to save one register rename table state for each unresolved branch or interruptible operation the machine becomes problematic.
A method which reduces the number of register rename table states that must be saved pending branch and interrupt resolution would reduce area and power consumption, and simplify the design.
The PowerPC 604 microprocessor does not use a circular table pointer mechanism to drive the register rename table, but instead uses a more classic register renaming technique where the rename register data is moved from the rename register to the architected register when it is committed (in contrast, table pointer mechanism designs do not move data, only physical register addresses). However, the 604 does provide a selective flush mechanism. The 604 maintains a set of rename register valid bits for each unresolved branch present in the machine. If a conditional branch is resolved and the predicted path was incorrect, the register rename table is restored to the state that existed prior to executing instructions on the incorrect instruction path.